<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.11"/>
<title>Kinetis Bootloader Host: elftosb::ConversionController Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="navtree.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="resize.js"></script>
<script type="text/javascript" src="navtreedata.js"></script>
<script type="text/javascript" src="navtree.js"></script>
<script type="text/javascript">
  $(document).ready(initResizable);
  $(window).load(resizeHeight);
</script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<script type="text/javascript">
  $(document).ready(function() { init_search(); });
</script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td id="projectlogo"><img alt="Logo" src="nxp_logo_small.png"/></td>
  <td id="projectalign" style="padding-left: 0.5em;">
   <div id="projectname">Kinetis Bootloader Host
   &#160;<span id="projectnumber">2.0.0</span>
   </div>
   <div id="projectbrief">Host Tools for Kinetis devices</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.11 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Introduction</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <span class="left">
          <img id="MSearchSelect" src="search/mag_sel.png"
               onmouseover="return searchBox.OnSearchSelectShow()"
               onmouseout="return searchBox.OnSearchSelectHide()"
               alt=""/>
          <input type="text" id="MSearchField" value="Search" accesskey="S"
               onfocus="searchBox.OnSearchFieldFocus(true)" 
               onblur="searchBox.OnSearchFieldFocus(false)" 
               onkeyup="searchBox.OnSearchFieldChange(event)"/>
          </span><span class="right">
            <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
          </span>
        </div>
      </li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Class&#160;List</span></a></li>
      <li><a href="classes.html"><span>Class&#160;Index</span></a></li>
      <li><a href="inherits.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Class&#160;Members</span></a></li>
    </ul>
  </div>
</div><!-- top -->
<div id="side-nav" class="ui-resizable side-nav-resizable">
  <div id="nav-tree">
    <div id="nav-tree-contents">
      <div id="nav-sync" class="sync"></div>
    </div>
  </div>
  <div id="splitbar" style="-moz-user-select:none;" 
       class="ui-resizable-handle">
  </div>
</div>
<script type="text/javascript">
$(document).ready(function(){initNavTree('classelftosb_1_1_conversion_controller.html','');});
</script>
<div id="doc-content">
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<div class="header">
  <div class="summary">
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pro-types">Protected Types</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classelftosb_1_1_conversion_controller-members.html">List of all members</a>  </div>
  <div class="headertitle">
<div class="title">elftosb::ConversionController Class Reference</div>  </div>
</div><!--header-->
<div class="contents">

<p>Manages the entire elftosb file conversion process.  
 <a href="classelftosb_1_1_conversion_controller.html#details">More...</a></p>

<p><code>#include &lt;<a class="el" href="_conversion_controller_8h_source.html">ConversionController.h</a>&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png" alt="+"/> Inheritance diagram for elftosb::ConversionController:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="classelftosb_1_1_conversion_controller__inherit__graph.svg" width="342" height="202"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<div id="dynsection-1" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-1-trigger" src="closed.png" alt="+"/> Collaboration diagram for elftosb::ConversionController:</div>
<div id="dynsection-1-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-1-content" class="dyncontent" style="display:none;">
<div class="center"><iframe scrolling="no" frameborder="0" src="classelftosb_1_1_conversion_controller__coll__graph.svg" width="2447" height="874"><p><b>This browser is not able to show SVG: try Firefox, Chrome, Safari, or Opera instead.</b></p></iframe>
</div>
<center><span class="legend">[<a target="top" href="graph_legend.html">legend</a>]</span></center></div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:ada34cb63163e9dd254471d37c3b8fe35"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada34cb63163e9dd254471d37c3b8fe35"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ada34cb63163e9dd254471d37c3b8fe35">ConversionController</a> ()</td></tr>
<tr class="memdesc:ada34cb63163e9dd254471d37c3b8fe35"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ada34cb63163e9dd254471d37c3b8fe35"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4b194e664f5a3017941113c7ff9f0ac1"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4b194e664f5a3017941113c7ff9f0ac1"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a4b194e664f5a3017941113c7ff9f0ac1">~ConversionController</a> ()</td></tr>
<tr class="memdesc:a4b194e664f5a3017941113c7ff9f0ac1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor. <br /></td></tr>
<tr class="separator:a4b194e664f5a3017941113c7ff9f0ac1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5effa854cadf46336060593f9cd45a90"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5effa854cadf46336060593f9cd45a90"></a>
<a class="el" href="classelftosb_1_1_eval_context.html">EvalContext</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a5effa854cadf46336060593f9cd45a90">getEvalContext</a> ()</td></tr>
<tr class="memdesc:a5effa854cadf46336060593f9cd45a90"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns a reference to the context used for expression evaluation. <br /></td></tr>
<tr class="separator:a5effa854cadf46336060593f9cd45a90"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Paths</div></td></tr>
<tr class="memitem:adfe659b2eb45fd7d51603431d1da0531"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="adfe659b2eb45fd7d51603431d1da0531"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#adfe659b2eb45fd7d51603431d1da0531">setCommandFilePath</a> (const std::string &amp;path)</td></tr>
<tr class="memdesc:adfe659b2eb45fd7d51603431d1da0531"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify the command file that controls the conversion process. <br /></td></tr>
<tr class="separator:adfe659b2eb45fd7d51603431d1da0531"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aeb411fd22b4fe550651159bc85f7a436"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#aeb411fd22b4fe550651159bc85f7a436">addExternalFilePath</a> (const std::string &amp;path)</td></tr>
<tr class="memdesc:aeb411fd22b4fe550651159bc85f7a436"><td class="mdescLeft">&#160;</td><td class="mdescRight">Specify the path of a file provided by the user from outside the command file.  <a href="#aeb411fd22b4fe550651159bc85f7a436">More...</a><br /></td></tr>
<tr class="separator:aeb411fd22b4fe550651159bc85f7a436"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Conversion</div></td></tr>
<tr class="memitem:af8549b36d95bdc61929f4ad7ad18997c"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af8549b36d95bdc61929f4ad7ad18997c">run</a> ()</td></tr>
<tr class="memdesc:af8549b36d95bdc61929f4ad7ad18997c"><td class="mdescLeft">&#160;</td><td class="mdescRight">Process input files.  <a href="#af8549b36d95bdc61929f4ad7ad18997c">More...</a><br /></td></tr>
<tr class="separator:af8549b36d95bdc61929f4ad7ad18997c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a96b363bd83e579f7d9e3d0ebb13859e3"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_boot_image.html">BootImage</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a96b363bd83e579f7d9e3d0ebb13859e3">generateOutput</a> (<a class="el" href="classelftosb_1_1_boot_image_generator.html">BootImageGenerator</a> *generator)</td></tr>
<tr class="memdesc:a96b363bd83e579f7d9e3d0ebb13859e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Uses a <a class="el" href="classelftosb_1_1_boot_image_generator.html" title="Abstract base class for generators of specific boot image formats. ">BootImageGenerator</a> object to create the final output boot image.  <a href="#a96b363bd83e579f7d9e3d0ebb13859e3">More...</a><br /></td></tr>
<tr class="separator:a96b363bd83e579f7d9e3d0ebb13859e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">SourceFileManager interface</div></td></tr>
<tr class="memitem:a70319994f6b274a765627b8ab6b2b508"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a70319994f6b274a765627b8ab6b2b508"></a>
virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a70319994f6b274a765627b8ab6b2b508">hasSourceFile</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:a70319994f6b274a765627b8ab6b2b508"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if a source file with the name <em>name</em> exists. <br /></td></tr>
<tr class="separator:a70319994f6b274a765627b8ab6b2b508"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22ac8c0dbe4df90d45ace08ef6c55657"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a22ac8c0dbe4df90d45ace08ef6c55657"></a>
virtual <a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a22ac8c0dbe4df90d45ace08ef6c55657">getSourceFile</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:a22ac8c0dbe4df90d45ace08ef6c55657"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gets the requested source file. <br /></td></tr>
<tr class="separator:a22ac8c0dbe4df90d45ace08ef6c55657"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7fce40239e8be143dead0b506afc3e49"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7fce40239e8be143dead0b506afc3e49"></a>
virtual <a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a7fce40239e8be143dead0b506afc3e49">getDefaultSourceFile</a> ()</td></tr>
<tr class="memdesc:a7fce40239e8be143dead0b506afc3e49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the default source file, or NULL if none is set. <br /></td></tr>
<tr class="separator:a7fce40239e8be143dead0b506afc3e49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classelftosb_1_1_option_dictionary"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classelftosb_1_1_option_dictionary')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classelftosb_1_1_option_dictionary.html">elftosb::OptionDictionary</a></td></tr>
<tr class="memitem:ae1219d9d52c600c05abce9f5f64dbecf inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae1219d9d52c600c05abce9f5f64dbecf"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#ae1219d9d52c600c05abce9f5f64dbecf">OptionDictionary</a> ()</td></tr>
<tr class="memdesc:ae1219d9d52c600c05abce9f5f64dbecf inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor. <br /></td></tr>
<tr class="separator:ae1219d9d52c600c05abce9f5f64dbecf inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae3f7a6ea3c5bdea61042913077bd9a0c inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ae3f7a6ea3c5bdea61042913077bd9a0c"></a>
&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#ae3f7a6ea3c5bdea61042913077bd9a0c">OptionDictionary</a> (<a class="el" href="classelftosb_1_1_option_context.html">OptionContext</a> *parent)</td></tr>
<tr class="memdesc:ae3f7a6ea3c5bdea61042913077bd9a0c inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor taking a parent context. <br /></td></tr>
<tr class="separator:ae3f7a6ea3c5bdea61042913077bd9a0c inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aac6d0e558de6fac55462b9a62ecc62e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#aac6d0e558de6fac55462b9a62ecc62e3">~OptionDictionary</a> ()</td></tr>
<tr class="memdesc:aac6d0e558de6fac55462b9a62ecc62e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor.  <a href="#aac6d0e558de6fac55462b9a62ecc62e3">More...</a><br /></td></tr>
<tr class="separator:aac6d0e558de6fac55462b9a62ecc62e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af47e367c191f5f72e6348b024ae073a1 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_option_context.html">OptionContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#af47e367c191f5f72e6348b024ae073a1">getParent</a> () const </td></tr>
<tr class="memdesc:af47e367c191f5f72e6348b024ae073a1 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the current parent context.  <a href="#af47e367c191f5f72e6348b024ae073a1">More...</a><br /></td></tr>
<tr class="separator:af47e367c191f5f72e6348b024ae073a1 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac0b1f68d82d0450d96ab9f5f2cef41a2 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#ac0b1f68d82d0450d96ab9f5f2cef41a2">setParent</a> (<a class="el" href="classelftosb_1_1_option_context.html">OptionContext</a> *newParent)</td></tr>
<tr class="memdesc:ac0b1f68d82d0450d96ab9f5f2cef41a2 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Change the parent context.  <a href="#ac0b1f68d82d0450d96ab9f5f2cef41a2">More...</a><br /></td></tr>
<tr class="separator:ac0b1f68d82d0450d96ab9f5f2cef41a2 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a06eecc97dde1bdf31d47a3f0f21371d5 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">virtual bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a06eecc97dde1bdf31d47a3f0f21371d5">hasOption</a> (const std::string &amp;name) const </td></tr>
<tr class="memdesc:a06eecc97dde1bdf31d47a3f0f21371d5 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Detemine whether the named option is present in the table.  <a href="#a06eecc97dde1bdf31d47a3f0f21371d5">More...</a><br /></td></tr>
<tr class="separator:a06eecc97dde1bdf31d47a3f0f21371d5 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8420e8239de77c045a52d2725f77541a inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">virtual const <a class="el" href="classelftosb_1_1_value.html">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a8420e8239de77c045a52d2725f77541a">getOption</a> (const std::string &amp;name) const </td></tr>
<tr class="memdesc:a8420e8239de77c045a52d2725f77541a inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns the option's value.  <a href="#a8420e8239de77c045a52d2725f77541a">More...</a><br /></td></tr>
<tr class="separator:a8420e8239de77c045a52d2725f77541a inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a854d1a5cc670b0d1d747d73f82d0b8bd inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a854d1a5cc670b0d1d747d73f82d0b8bd">setOption</a> (const std::string &amp;name, <a class="el" href="classelftosb_1_1_value.html">Value</a> *value)</td></tr>
<tr class="memdesc:a854d1a5cc670b0d1d747d73f82d0b8bd inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Adds or changes an option's value.  <a href="#a854d1a5cc670b0d1d747d73f82d0b8bd">More...</a><br /></td></tr>
<tr class="separator:a854d1a5cc670b0d1d747d73f82d0b8bd inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5db75b348e96c3cf920e6615edf9dabe inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a5db75b348e96c3cf920e6615edf9dabe">deleteOption</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:a5db75b348e96c3cf920e6615edf9dabe inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Removes an option from the table.  <a href="#a5db75b348e96c3cf920e6615edf9dabe">More...</a><br /></td></tr>
<tr class="separator:a5db75b348e96c3cf920e6615edf9dabe inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a48deaa5ec36f70b02c37b536dfd30874 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a48deaa5ec36f70b02c37b536dfd30874">isOptionLocked</a> (const std::string &amp;name) const </td></tr>
<tr class="memdesc:a48deaa5ec36f70b02c37b536dfd30874 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Returns true if the specified option is locked from further changes.  <a href="#a48deaa5ec36f70b02c37b536dfd30874">More...</a><br /></td></tr>
<tr class="separator:a48deaa5ec36f70b02c37b536dfd30874 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae462adb3e381c4782340f0518c816d34 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#ae462adb3e381c4782340f0518c816d34">lockOption</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:ae462adb3e381c4782340f0518c816d34 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Prevent further modifications of an option's value.  <a href="#ae462adb3e381c4782340f0518c816d34">More...</a><br /></td></tr>
<tr class="separator:ae462adb3e381c4782340f0518c816d34 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1dd616bcebbcdb8012526a73e398f5e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a1dd616bcebbcdb8012526a73e398f5e3">unlockOption</a> (const std::string &amp;name)</td></tr>
<tr class="memdesc:a1dd616bcebbcdb8012526a73e398f5e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Allow an option to be changed.  <a href="#a1dd616bcebbcdb8012526a73e398f5e3">More...</a><br /></td></tr>
<tr class="separator:a1dd616bcebbcdb8012526a73e398f5e3 inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae84a6d87145513cec9065f5a63626f9f inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top">const <a class="el" href="classelftosb_1_1_value.html">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#ae84a6d87145513cec9065f5a63626f9f">operator[]</a> (const std::string &amp;name) const </td></tr>
<tr class="memdesc:ae84a6d87145513cec9065f5a63626f9f inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Indexing operator; returns the value for the option <em>name</em>.  <a href="#ae84a6d87145513cec9065f5a63626f9f">More...</a><br /></td></tr>
<tr class="separator:ae84a6d87145513cec9065f5a63626f9f inherit pub_methods_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pub_methods_classelftosb_1_1_option_context"><td colspan="2" onclick="javascript:toggleInherit('pub_methods_classelftosb_1_1_option_context')"><img src="closed.png" alt="-"/>&#160;Public Member Functions inherited from <a class="el" href="classelftosb_1_1_option_context.html">elftosb::OptionContext</a></td></tr>
<tr class="memitem:a5d00c2591de414fc455048f2938f831e inherit pub_methods_classelftosb_1_1_option_context"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a5d00c2591de414fc455048f2938f831e"></a>
virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_context.html#a5d00c2591de414fc455048f2938f831e">~OptionContext</a> ()</td></tr>
<tr class="memdesc:a5d00c2591de414fc455048f2938f831e inherit pub_methods_classelftosb_1_1_option_context"><td class="mdescLeft">&#160;</td><td class="mdescRight">Make the dtor virtual. <br /></td></tr>
<tr class="separator:a5d00c2591de414fc455048f2938f831e inherit pub_methods_classelftosb_1_1_option_context"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-types"></a>
Protected Types</h2></td></tr>
<tr class="memitem:a20c47fb6fe671f8d72362581fbf3b365"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a20c47fb6fe671f8d72362581fbf3b365"></a>
typedef std::map&lt; std::string, <a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a20c47fb6fe671f8d72362581fbf3b365">source_map_t</a></td></tr>
<tr class="memdesc:a20c47fb6fe671f8d72362581fbf3b365"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map from source name to object. <br /></td></tr>
<tr class="separator:a20c47fb6fe671f8d72362581fbf3b365"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af6d43d6747b5d190321147739e61a079"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af6d43d6747b5d190321147739e61a079"></a>
typedef std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af6d43d6747b5d190321147739e61a079">path_vector_t</a></td></tr>
<tr class="memdesc:af6d43d6747b5d190321147739e61a079"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of file paths. <br /></td></tr>
<tr class="separator:af6d43d6747b5d190321147739e61a079"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa7d9f8d9865d516ec83bd08428ec56fe"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa7d9f8d9865d516ec83bd08428ec56fe"></a>
typedef std::vector&lt; <a class="el" href="classelftosb_1_1_output_section.html">OutputSection</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#aa7d9f8d9865d516ec83bd08428ec56fe">section_vector_t</a></td></tr>
<tr class="memdesc:aa7d9f8d9865d516ec83bd08428ec56fe"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of output sections. <br /></td></tr>
<tr class="separator:aa7d9f8d9865d516ec83bd08428ec56fe"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a195c0a0bd872f22443027317e1fa0ec3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a195c0a0bd872f22443027317e1fa0ec3"></a>
typedef std::vector&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a195c0a0bd872f22443027317e1fa0ec3">source_name_vector_t</a></td></tr>
<tr class="memdesc:a195c0a0bd872f22443027317e1fa0ec3"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of source names. <br /></td></tr>
<tr class="separator:a195c0a0bd872f22443027317e1fa0ec3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a536efd2c766d5d34c71e48c4955bb9c3"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a536efd2c766d5d34c71e48c4955bb9c3"></a>
typedef std::vector&lt; <a class="el" href="classelftosb_1_1_keyblob.html">Keyblob</a> * &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a536efd2c766d5d34c71e48c4955bb9c3">keyblob_vector_t</a></td></tr>
<tr class="memdesc:a536efd2c766d5d34c71e48c4955bb9c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of keyblobs. <br /></td></tr>
<tr class="separator:a536efd2c766d5d34c71e48c4955bb9c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_types_classelftosb_1_1_option_dictionary"><td colspan="2" onclick="javascript:toggleInherit('pro_types_classelftosb_1_1_option_dictionary')"><img src="closed.png" alt="-"/>&#160;Protected Types inherited from <a class="el" href="classelftosb_1_1_option_dictionary.html">elftosb::OptionDictionary</a></td></tr>
<tr class="memitem:aa3cf693f333d6a9f3095c6c7f0e8146b inherit pro_types_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa3cf693f333d6a9f3095c6c7f0e8146b"></a>
typedef std::map&lt; std::string, <a class="el" href="structelftosb_1_1_option_dictionary_1_1_option_value.html">OptionValue</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#aa3cf693f333d6a9f3095c6c7f0e8146b">option_map_t</a></td></tr>
<tr class="memdesc:aa3cf693f333d6a9f3095c6c7f0e8146b inherit pro_types_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map from option name to value. <br /></td></tr>
<tr class="separator:aa3cf693f333d6a9f3095c6c7f0e8146b inherit pro_types_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">AST processing</div></td></tr>
<tr class="memitem:a0d4c92baf308f84152f1bcba4a606583"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a0d4c92baf308f84152f1bcba4a606583">parseCommandFile</a> ()</td></tr>
<tr class="separator:a0d4c92baf308f84152f1bcba4a606583"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af9d97007fa64feaf2e947d4322a9267e"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af9d97007fa64feaf2e947d4322a9267e">processOptions</a> (<a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *options)</td></tr>
<tr class="separator:af9d97007fa64feaf2e947d4322a9267e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aaa468ab83633871567e5190ff62a35f7"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#aaa468ab83633871567e5190ff62a35f7">processConstants</a> (<a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *constants)</td></tr>
<tr class="separator:aaa468ab83633871567e5190ff62a35f7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a98b5fa4a578cc79d6b9eddcc192e8491"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a98b5fa4a578cc79d6b9eddcc192e8491">processSources</a> (<a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *sources)</td></tr>
<tr class="separator:a98b5fa4a578cc79d6b9eddcc192e8491"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5eda84b94dfeea7b7e2144d88b7b4b9a"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a5eda84b94dfeea7b7e2144d88b7b4b9a">processKeyblob</a> (<a class="el" href="classelftosb_1_1_expr_a_s_t_node.html">ExprASTNode</a> *idExpr, <a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *entires)</td></tr>
<tr class="separator:a5eda84b94dfeea7b7e2144d88b7b4b9a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8208c4ad403bc0b16fa4a70ae464af4c"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a8208c4ad403bc0b16fa4a70ae464af4c"></a>
void&#160;</td><td class="memItemRight" valign="bottom"><b>processSections</b> (<a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *sections)</td></tr>
<tr class="separator:a8208c4ad403bc0b16fa4a70ae464af4c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a22b56bc362aac01ba477d8611b41106a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_output_section.html">OutputSection</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a22b56bc362aac01ba477d8611b41106a">convertDataSection</a> (<a class="el" href="classelftosb_1_1_data_section_contents_a_s_t_node.html">DataSectionContentsASTNode</a> *dataSection, uint32_t sectionID, <a class="el" href="classelftosb_1_1_option_dictionary.html">OptionDictionary</a> *optionsDict)</td></tr>
<tr class="separator:a22b56bc362aac01ba477d8611b41106a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Statement conversion</div></td></tr>
<tr class="memitem:ad8e901fbaafddbeb2dee816dc079163e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ad8e901fbaafddbeb2dee816dc079163e">convertStatementList</a> (<a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *statements)</td></tr>
<tr class="separator:ad8e901fbaafddbeb2dee816dc079163e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8df833e6e93d3b17b929d2cced6920bb"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a8df833e6e93d3b17b929d2cced6920bb">convertOneStatement</a> (<a class="el" href="classelftosb_1_1_statement_a_s_t_node.html">StatementASTNode</a> *statement)</td></tr>
<tr class="separator:a8df833e6e93d3b17b929d2cced6920bb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad9b657c1b30e68f496ece044a9a79307"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ad9b657c1b30e68f496ece044a9a79307">convertLoadStatement</a> (<a class="el" href="classelftosb_1_1_load_statement_a_s_t_node.html">LoadStatementASTNode</a> *statement)</td></tr>
<tr class="separator:ad9b657c1b30e68f496ece044a9a79307"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1bf67c5c92ed56c95f0d2f0cae656f6a"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a1bf67c5c92ed56c95f0d2f0cae656f6a">convertCallStatement</a> (<a class="el" href="classelftosb_1_1_call_statement_a_s_t_node.html">CallStatementASTNode</a> *statement)</td></tr>
<tr class="separator:a1bf67c5c92ed56c95f0d2f0cae656f6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6aa2996ba397329a0a7a7e1d110c968"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ae6aa2996ba397329a0a7a7e1d110c968">convertFromStatement</a> (<a class="el" href="classelftosb_1_1_from_statement_a_s_t_node.html">FromStatementASTNode</a> *statement)</td></tr>
<tr class="separator:ae6aa2996ba397329a0a7a7e1d110c968"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2da6c6d7f1b9e1fe2f63857b4648ee9"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#aa2da6c6d7f1b9e1fe2f63857b4648ee9">convertModeStatement</a> (<a class="el" href="classelftosb_1_1_mode_statement_a_s_t_node.html">ModeStatementASTNode</a> *statement)</td></tr>
<tr class="separator:aa2da6c6d7f1b9e1fe2f63857b4648ee9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4eed30bbcd1ff42ba876b5571d284090"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4eed30bbcd1ff42ba876b5571d284090"></a>
<a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a4eed30bbcd1ff42ba876b5571d284090">convertResetStatement</a> (<a class="el" href="classelftosb_1_1_reset_statement_a_s_t_node.html">ResetStatementASTNode</a> *statement)</td></tr>
<tr class="memdesc:a4eed30bbcd1ff42ba876b5571d284090"><td class="mdescLeft">&#160;</td><td class="mdescRight">Creates a Reset <a class="el" href="classelftosb_1_1_operation.html" title="Abstract base class for all boot operations. ">Operation</a> object and returns an <a class="el" href="classelftosb_1_1_operation_sequence.html" title="Ordered sequence of operations. ">OperationSequence</a> containing it. <br /></td></tr>
<tr class="separator:a4eed30bbcd1ff42ba876b5571d284090"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac3637d147ed10fec58d1be64bce67254"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ac3637d147ed10fec58d1be64bce67254">convertIfStatement</a> (<a class="el" href="classelftosb_1_1_if_statement_a_s_t_node.html">IfStatementASTNode</a> *statement)</td></tr>
<tr class="separator:ac3637d147ed10fec58d1be64bce67254"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a99a910fab33413ed3e1ec6cc16a5269b"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a99a910fab33413ed3e1ec6cc16a5269b"></a>
<a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>convertEraseStatement</b> (<a class="el" href="classelftosb_1_1_erase_statement_a_s_t_node.html">EraseStatementASTNode</a> *statement)</td></tr>
<tr class="separator:a99a910fab33413ed3e1ec6cc16a5269b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab26c83f6c882b713b997fbca62c32c8d"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ab26c83f6c882b713b997fbca62c32c8d"></a>
<a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>convertMemEnableStatement</b> (<a class="el" href="classelftosb_1_1_mem_enable_statement_a_s_t_node.html">MemEnableStatementASTNode</a> *statement)</td></tr>
<tr class="separator:ab26c83f6c882b713b997fbca62c32c8d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a1e5dd56ecd1974c10e43dfd2dd20972b"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a1e5dd56ecd1974c10e43dfd2dd20972b">convertKeywrapStatement</a> (<a class="el" href="classelftosb_1_1_keywrap_statement_a_s_t_node.html">KeywrapStatementASTNode</a> *statement)</td></tr>
<tr class="separator:a1e5dd56ecd1974c10e43dfd2dd20972b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6f59d932eac25fc09ac8442e1f234aa5"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a6f59d932eac25fc09ac8442e1f234aa5">convertEncryptStatement</a> (<a class="el" href="classelftosb_1_1_encrypt_statement_a_s_t_node.html">EncryptStatementASTNode</a> *statement)</td></tr>
<tr class="separator:a6f59d932eac25fc09ac8442e1f234aa5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4f4d3c44b1be9dd0051a7899e1d9a12"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af4f4d3c44b1be9dd0051a7899e1d9a12">handleMessageStatement</a> (<a class="el" href="classelftosb_1_1_message_statement_a_s_t_node.html">MessageStatementASTNode</a> *statement)</td></tr>
<tr class="separator:af4f4d3c44b1be9dd0051a7899e1d9a12"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Utilities</div></td></tr>
<tr class="memitem:aef6baa87ec2f5430fc1989c24a3b8ffc"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_value.html">Value</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#aef6baa87ec2f5430fc1989c24a3b8ffc">convertAssignmentNodeToValue</a> (<a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *node, std::string &amp;ident)</td></tr>
<tr class="separator:aef6baa87ec2f5430fc1989c24a3b8ffc"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a3b4f740adcce85a4044650523604c922"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a3b4f740adcce85a4044650523604c922">getSourceFromName</a> (std::string *sourceName, int line)</td></tr>
<tr class="separator:a3b4f740adcce85a4044650523604c922"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada4209b5749ef668ba65b2893a7e9732"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_data_source.html">DataSource</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ada4209b5749ef668ba65b2893a7e9732">createSourceFromNode</a> (<a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *dataNode)</td></tr>
<tr class="separator:ada4209b5749ef668ba65b2893a7e9732"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad479b0599759a9bc9198e3a5c4a4287e"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classelftosb_1_1_data_target.html">DataTarget</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ad479b0599759a9bc9198e3a5c4a4287e">createTargetFromNode</a> (<a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *targetNode)</td></tr>
<tr class="separator:ad479b0599759a9bc9198e3a5c4a4287e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a515fa552c78029c448b849d78f6b23e2"><td class="memItemLeft" align="right" valign="top">std::string *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a515fa552c78029c448b849d78f6b23e2">substituteVariables</a> (const std::string *message)</td></tr>
<tr class="separator:a515fa552c78029c448b849d78f6b23e2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa5693ed146a1f4b7fdb7b9c4d5dc70a8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="aa5693ed146a1f4b7fdb7b9c4d5dc70a8"></a>
<a class="el" href="classelftosb_1_1_data_source.html">DataSource</a> *&#160;</td><td class="memItemRight" valign="bottom"><b>createIVTDataSource</b> (<a class="el" href="classelftosb_1_1_i_v_t_const_a_s_t_node.html">IVTConstASTNode</a> *ivtNode)</td></tr>
<tr class="separator:aa5693ed146a1f4b7fdb7b9c4d5dc70a8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr><td colspan="2"><div class="groupHeader">Debugging</div></td></tr>
<tr class="memitem:a6d7e4b970d586cc1467a5d7d4d0e55e5"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a6d7e4b970d586cc1467a5d7d4d0e55e5">testLexer</a> (<a class="el" href="classelftosb_1_1_elftosb_lexer.html">ElftosbLexer</a> &amp;lexer)</td></tr>
<tr class="separator:a6d7e4b970d586cc1467a5d7d4d0e55e5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a63838abcab2df44563db15fc2ca88761"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a63838abcab2df44563db15fc2ca88761">printIntConstExpr</a> (const std::string &amp;ident, <a class="el" href="classelftosb_1_1_int_const_expr_a_s_t_node.html">IntConstExprASTNode</a> *expr)</td></tr>
<tr class="separator:a63838abcab2df44563db15fc2ca88761"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:af84f4ce40e3f0e89df0d05897ae22807"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af84f4ce40e3f0e89df0d05897ae22807"></a>
<a class="el" href="group__smart__pointer.html#classsmart__ptr">smart_ptr</a>&lt; std::string &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af84f4ce40e3f0e89df0d05897ae22807">m_commandFilePath</a></td></tr>
<tr class="memdesc:af84f4ce40e3f0e89df0d05897ae22807"><td class="mdescLeft">&#160;</td><td class="mdescRight">Path to command file. <br /></td></tr>
<tr class="separator:af84f4ce40e3f0e89df0d05897ae22807"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ada74738575f76dec7d429a0ee394084f"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ada74738575f76dec7d429a0ee394084f"></a>
<a class="el" href="group__smart__pointer.html#classsmart__ptr">smart_ptr</a>&lt; <a class="el" href="classelftosb_1_1_command_file_a_s_t_node.html">CommandFileASTNode</a> &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ada74738575f76dec7d429a0ee394084f">m_ast</a></td></tr>
<tr class="memdesc:ada74738575f76dec7d429a0ee394084f"><td class="mdescLeft">&#160;</td><td class="mdescRight">Root of the abstract syntax tree. <br /></td></tr>
<tr class="separator:ada74738575f76dec7d429a0ee394084f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7d3f0e545baec2893568e5bf68eed310"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a7d3f0e545baec2893568e5bf68eed310"></a>
<a class="el" href="classelftosb_1_1_eval_context.html">EvalContext</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a7d3f0e545baec2893568e5bf68eed310">m_context</a></td></tr>
<tr class="memdesc:a7d3f0e545baec2893568e5bf68eed310"><td class="mdescLeft">&#160;</td><td class="mdescRight">Evaluation context for expressions. <br /></td></tr>
<tr class="separator:a7d3f0e545baec2893568e5bf68eed310"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9a4ed33ca258ea55bad725fa35f21592"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a9a4ed33ca258ea55bad725fa35f21592"></a>
<a class="el" href="classelftosb_1_1_conversion_controller.html#a20c47fb6fe671f8d72362581fbf3b365">source_map_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a9a4ed33ca258ea55bad725fa35f21592">m_sources</a></td></tr>
<tr class="memdesc:a9a4ed33ca258ea55bad725fa35f21592"><td class="mdescLeft">&#160;</td><td class="mdescRight">Map of source names to file objects. <br /></td></tr>
<tr class="separator:a9a4ed33ca258ea55bad725fa35f21592"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a965fc2d7904361996f2de3eb18acd3c8"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a965fc2d7904361996f2de3eb18acd3c8"></a>
<a class="el" href="classelftosb_1_1_conversion_controller.html#af6d43d6747b5d190321147739e61a079">path_vector_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a965fc2d7904361996f2de3eb18acd3c8">m_externPaths</a></td></tr>
<tr class="memdesc:a965fc2d7904361996f2de3eb18acd3c8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Paths provided on the command line by the user. <br /></td></tr>
<tr class="separator:a965fc2d7904361996f2de3eb18acd3c8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afe52092ae5ca928c5108ddac28b4c871"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="afe52092ae5ca928c5108ddac28b4c871"></a>
<a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#afe52092ae5ca928c5108ddac28b4c871">m_defaultSource</a></td></tr>
<tr class="memdesc:afe52092ae5ca928c5108ddac28b4c871"><td class="mdescLeft">&#160;</td><td class="mdescRight">Source to use when one isn't provided. <br /></td></tr>
<tr class="separator:afe52092ae5ca928c5108ddac28b4c871"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad82826037f5dd39335c17a012f942dd0"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ad82826037f5dd39335c17a012f942dd0"></a>
<a class="el" href="classelftosb_1_1_conversion_controller.html#aa7d9f8d9865d516ec83bd08428ec56fe">section_vector_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#ad82826037f5dd39335c17a012f942dd0">m_outputSections</a></td></tr>
<tr class="memdesc:ad82826037f5dd39335c17a012f942dd0"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of output sections the user wants. <br /></td></tr>
<tr class="separator:ad82826037f5dd39335c17a012f942dd0"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a285950f469dfb162047259a200480531"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a285950f469dfb162047259a200480531"></a>
<a class="el" href="classelftosb_1_1_conversion_controller.html#a195c0a0bd872f22443027317e1fa0ec3">source_name_vector_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a285950f469dfb162047259a200480531">m_failedSources</a></td></tr>
<tr class="memdesc:a285950f469dfb162047259a200480531"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of sources that failed to open successfully. <br /></td></tr>
<tr class="separator:a285950f469dfb162047259a200480531"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af1370e1ebe76fccacdf2c58c0b216419"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="af1370e1ebe76fccacdf2c58c0b216419"></a>
<a class="el" href="classelftosb_1_1_conversion_controller.html#a536efd2c766d5d34c71e48c4955bb9c3">keyblob_vector_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#af1370e1ebe76fccacdf2c58c0b216419">m_keyblobs</a></td></tr>
<tr class="memdesc:af1370e1ebe76fccacdf2c58c0b216419"><td class="mdescLeft">&#160;</td><td class="mdescRight">List of keyblobs the user defines. <br /></td></tr>
<tr class="separator:af1370e1ebe76fccacdf2c58c0b216419"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abc28485f77c40cf315df1ebe8a86f497"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc28485f77c40cf315df1ebe8a86f497"></a>
<a class="el" href="classelftosb_1_1_keyblob.html">Keyblob</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#abc28485f77c40cf315df1ebe8a86f497">m_keywrapKeyblob</a></td></tr>
<tr class="memdesc:abc28485f77c40cf315df1ebe8a86f497"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classelftosb_1_1_keyblob.html" title="Keyblob specification. ">Keyblob</a> used for keywrapping. <br /></td></tr>
<tr class="separator:abc28485f77c40cf315df1ebe8a86f497"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4391388367418538188c7d544328d993"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a4391388367418538188c7d544328d993"></a>
<a class="el" href="classelftosb_1_1_keyblob.html">Keyblob</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_conversion_controller.html#a4391388367418538188c7d544328d993">m_encryptKeyblob</a></td></tr>
<tr class="memdesc:a4391388367418538188c7d544328d993"><td class="mdescLeft">&#160;</td><td class="mdescRight"><a class="el" href="classelftosb_1_1_keyblob.html" title="Keyblob specification. ">Keyblob</a> used for OTFAD encryption. <br /></td></tr>
<tr class="separator:a4391388367418538188c7d544328d993"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="inherit_header pro_attribs_classelftosb_1_1_option_dictionary"><td colspan="2" onclick="javascript:toggleInherit('pro_attribs_classelftosb_1_1_option_dictionary')"><img src="closed.png" alt="-"/>&#160;Protected Attributes inherited from <a class="el" href="classelftosb_1_1_option_dictionary.html">elftosb::OptionDictionary</a></td></tr>
<tr class="memitem:abc179e5aabf72f043768b5c012ba0750 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abc179e5aabf72f043768b5c012ba0750"></a>
<a class="el" href="classelftosb_1_1_option_context.html">OptionContext</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#abc179e5aabf72f043768b5c012ba0750">m_parent</a></td></tr>
<tr class="memdesc:abc179e5aabf72f043768b5c012ba0750 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">Our parent context. <br /></td></tr>
<tr class="separator:abc179e5aabf72f043768b5c012ba0750 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a11b3bf9dd6be7bd9927cf52d15147ca2 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a11b3bf9dd6be7bd9927cf52d15147ca2"></a>
<a class="el" href="classelftosb_1_1_option_dictionary.html#aa3cf693f333d6a9f3095c6c7f0e8146b">option_map_t</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classelftosb_1_1_option_dictionary.html#a11b3bf9dd6be7bd9927cf52d15147ca2">m_options</a></td></tr>
<tr class="memdesc:a11b3bf9dd6be7bd9927cf52d15147ca2 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="mdescLeft">&#160;</td><td class="mdescRight">The option dictionary. <br /></td></tr>
<tr class="separator:a11b3bf9dd6be7bd9927cf52d15147ca2 inherit pro_attribs_classelftosb_1_1_option_dictionary"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>Manages the entire elftosb file conversion process. </p>
<p>Instances of this class are intended to be used only once. There is no way to reset an instance once it has started or completed a conversion. Thus the <a class="el" href="classelftosb_1_1_conversion_controller.html#af8549b36d95bdc61929f4ad7ad18997c" title="Process input files. ">run()</a> method is not reentrant. State information is stored in the object during the conversion process.</p>
<p>Two things need to be done before the conversion can be started. The command file path has to be set with the <a class="el" href="classelftosb_1_1_conversion_controller.html#adfe659b2eb45fd7d51603431d1da0531" title="Specify the command file that controls the conversion process. ">setCommandFilePath()</a> method, and the paths of any externally provided (i.e., from the command line) files need to be added with <a class="el" href="classelftosb_1_1_conversion_controller.html#aeb411fd22b4fe550651159bc85f7a436" title="Specify the path of a file provided by the user from outside the command file. ">addExternalFilePath()</a>. Once these tasks are completed, the <a class="el" href="classelftosb_1_1_conversion_controller.html#af8549b36d95bdc61929f4ad7ad18997c" title="Process input files. ">run()</a> method can be called to parse and execute the command file. After <a class="el" href="classelftosb_1_1_conversion_controller.html#af8549b36d95bdc61929f4ad7ad18997c" title="Process input files. ">run()</a> returns, pass an instance of <a class="el" href="classelftosb_1_1_boot_image_generator.html" title="Abstract base class for generators of specific boot image formats. ">BootImageGenerator</a> to the <a class="el" href="classelftosb_1_1_conversion_controller.html#a96b363bd83e579f7d9e3d0ebb13859e3" title="Uses a BootImageGenerator object to create the final output boot image. ">generateOutput()</a> method in order to get an instance of <a class="el" href="classelftosb_1_1_boot_image.html" title="Abstract base class for all boot image format classes. ">BootImage</a> that can be written to the output file. </p>
</div><h2 class="groupheader">Member Function Documentation</h2>
<a class="anchor" id="aeb411fd22b4fe550651159bc85f7a436"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::addExternalFilePath </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>path</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Specify the path of a file provided by the user from outside the command file. </p>
<p>The paths provided to this method are added to an array and accessed with the "extern(N)" notation in the command file. So the path provided in the third call to <a class="el" href="classelftosb_1_1_conversion_controller.html#aeb411fd22b4fe550651159bc85f7a436" title="Specify the path of a file provided by the user from outside the command file. ">addExternalFilePath()</a> will be found with N=2 in the source definition. </p>

</div>
</div>
<a class="anchor" id="aef6baa87ec2f5430fc1989c24a3b8ffc"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_value.html">Value</a> * ConversionController::convertAssignmentNodeToValue </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *&#160;</td>
          <td class="paramname"><em>node</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">std::string &amp;&#160;</td>
          <td class="paramname"><em>ident</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir"></td><td class="paramname">node</td><td>The AST node instance for the assignment expression. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ident</td><td>Upon exit this string will be set the the left hand side of the assignment expression, the identifier name.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An object that is a subclass of <a class="el" href="classelftosb_1_1_value.html" title="Abstract base class for values of arbitrary types. ">Value</a> is returned. The specific subclass will depend on the type of the right hand side of the assignment expression whose AST node was provided in the <em>node</em> argument.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classelftosb_1_1semantic__error.html" title="A semantic error discovered while processing the command file AST. ">semantic_error</a></td><td>Thrown for any error where an AST node is an unexpected type. This may be the <em>node</em> argument itself, if it is not an <a class="el" href="classelftosb_1_1_assignment_a_s_t_node.html">AssignmentASTNode</a>. Or it may be an unexpected type for either the right or left hand side of the assignment. The message for the exception will contain a description of the error. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a1bf67c5c92ed56c95f0d2f0cae656f6a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertCallStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_call_statement_a_s_t_node.html">CallStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Possible call target node types:</p><ul>
<li><a class="el" href="classelftosb_1_1_symbol_a_s_t_node.html">SymbolASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_expr_a_s_t_node.html" title="Abstract base class for all expression AST nodes. ">ExprASTNode</a></li>
</ul>
<p>Possible call argument node types:</p><ul>
<li><a class="el" href="classelftosb_1_1_expr_a_s_t_node.html" title="Abstract base class for all expression AST nodes. ">ExprASTNode</a></li>
<li>NULL </li>
</ul>

</div>
</div>
<a class="anchor" id="a22b56bc362aac01ba477d8611b41106a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_output_section.html">OutputSection</a> * ConversionController::convertDataSection </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_data_section_contents_a_s_t_node.html">DataSectionContentsASTNode</a> *&#160;</td>
          <td class="paramname"><em>dataSection</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">uint32_t&#160;</td>
          <td class="paramname"><em>sectionID</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_option_dictionary.html">OptionDictionary</a> *&#160;</td>
          <td class="paramname"><em>optionsDict</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Creates an instance of <a class="el" href="classelftosb_1_1_binary_data_section.html" title="A section of the output file that contains arbitrary binary data. ">BinaryDataSection</a> from the AST node passed in the <em>dataSection</em> parameter. The section-specific options for this node will have already been converted into an <a class="el" href="classelftosb_1_1_option_dictionary.html" title="Concrete implementation of OptionContext. ">OptionDictionary</a>, the one passed in the <em>optionsDict</em> parameter.</p>
<p>The <em>dataSection</em> node will have as its contents one of the AST node classes that represents a source of data. The member function <a class="el" href="classelftosb_1_1_conversion_controller.html#ada4209b5749ef668ba65b2893a7e9732">createSourceFromNode()</a> is used to convert this AST node into an instance of a <a class="el" href="classelftosb_1_1_data_source.html" title="Abstract base class for data sources. ">DataSource</a> subclass. Then the method imageDataSource() converts the segments of the <a class="el" href="classelftosb_1_1_data_source.html" title="Abstract base class for data sources. ">DataSource</a> into a raw binary buffer that becomes the contents of the <a class="el" href="classelftosb_1_1_binary_data_section.html" title="A section of the output file that contains arbitrary binary data. ">BinaryDataSection</a> this is returned.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">dataSection</td><td>The AST node for the data section. </td></tr>
    <tr><td class="paramname">sectionID</td><td>Unique tag value the user has assigned to this section. </td></tr>
    <tr><td class="paramname">optionsDict</td><td><a class="el" href="class_options.html" title="parse command-line options ">Options</a> that apply only to this section. This dictionary will be assigned as the options dictionary for the resulting section object. Its parent is the conversion controller itself. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>An instance of <a class="el" href="classelftosb_1_1_binary_data_section.html" title="A section of the output file that contains arbitrary binary data. ">BinaryDataSection</a>. Its contents are a contiguous binary representation of the contents of <em>dataSection</em>. </dd></dl>

</div>
</div>
<a class="anchor" id="a6f59d932eac25fc09ac8442e1f234aa5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertEncryptStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_encrypt_statement_a_s_t_node.html">EncryptStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>First this method sets the keyblob to the keyblob number identified in the encrypt statement. Then the statements within the encrypt block are processed recursively by calling <a class="el" href="classelftosb_1_1_conversion_controller.html#ad8e901fbaafddbeb2dee816dc079163e">convertStatementList()</a>. The resulting operation sequence is returned. </p>

</div>
</div>
<a class="anchor" id="ae6aa2996ba397329a0a7a7e1d110c968"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertFromStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_from_statement_a_s_t_node.html">FromStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>First this method sets the default source to the source identified in the from statement. Then the statements within the from block are processed recursively by calling <a class="el" href="classelftosb_1_1_conversion_controller.html#ad8e901fbaafddbeb2dee816dc079163e">convertStatementList()</a>. The resulting operation sequence is returned. </p>

</div>
</div>
<a class="anchor" id="ac3637d147ed10fec58d1be64bce67254"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertIfStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_if_statement_a_s_t_node.html">IfStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Else branches, including else-if, are handled recursively, so there is a limit on the number of them based on the stack size.</p>
<dl class="section return"><dt>Returns</dt><dd>Returns the operation sequence for the branch of the if statement that evaluated to true. If the statement did not have an else branch and the condition expression evaluated to false, then NULL will be returned.</dd></dl>

</div>
</div>
<a class="anchor" id="a1e5dd56ecd1974c10e43dfd2dd20972b"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertKeywrapStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_keywrap_statement_a_s_t_node.html">KeywrapStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>First this method sets the keyblob to the keyblob number identified in the keywrap statement. Then the statements within the keywrap block are processed recursively by calling <a class="el" href="classelftosb_1_1_conversion_controller.html#ad8e901fbaafddbeb2dee816dc079163e">convertStatementList()</a>. The resulting operation sequence is returned. </p>

</div>
</div>
<a class="anchor" id="ad9b657c1b30e68f496ece044a9a79307"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertLoadStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_load_statement_a_s_t_node.html">LoadStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Possible load data node types:</p><ul>
<li><a class="el" href="classelftosb_1_1_string_const_a_s_t_node.html">StringConstASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_expr_a_s_t_node.html" title="Abstract base class for all expression AST nodes. ">ExprASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_source_a_s_t_node.html">SourceASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_section_match_list_a_s_t_node.html" title="List of section matches for a particular source name. ">SectionMatchListASTNode</a></li>
</ul>
<p>Possible load target node types:</p><ul>
<li><a class="el" href="classelftosb_1_1_symbol_a_s_t_node.html">SymbolASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_natural_location_a_s_t_node.html">NaturalLocationASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_address_range_a_s_t_node.html">AddressRangeASTNode</a> </li>
</ul>

</div>
</div>
<a class="anchor" id="aa2da6c6d7f1b9e1fe2f63857b4648ee9"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertModeStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_mode_statement_a_s_t_node.html">ModeStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Evaluates the expression to get the new boot mode value. Then creates a <a class="el" href="classelftosb_1_1_boot_mode_operation.html" title="Operation to switch boot modes. ">BootModeOperation</a> object and returns an <a class="el" href="classelftosb_1_1_operation_sequence.html" title="Ordered sequence of operations. ">OperationSequence</a> containing it.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classelftosb_1_1semantic__error.html" title="A semantic error discovered while processing the command file AST. ">elftosb::semantic_error</a></td><td>Thrown if a semantic problem is found with the boot mode expression. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a8df833e6e93d3b17b929d2cced6920bb"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertOneStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_statement_a_s_t_node.html">StatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Uses C++ RTTI to identify the particular subclass of <a class="el" href="classelftosb_1_1_statement_a_s_t_node.html">StatementASTNode</a> that the <em>statement</em> argument matches. Then the appropriate conversion method is called.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classelftosb_1_1_conversion_controller.html#ad9b657c1b30e68f496ece044a9a79307">convertLoadStatement()</a> </dd>
<dd>
<a class="el" href="classelftosb_1_1_conversion_controller.html#a1bf67c5c92ed56c95f0d2f0cae656f6a">convertCallStatement()</a> </dd>
<dd>
<a class="el" href="classelftosb_1_1_conversion_controller.html#ae6aa2996ba397329a0a7a7e1d110c968">convertFromStatement()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ad8e901fbaafddbeb2dee816dc079163e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_operation_sequence.html">OperationSequence</a> * ConversionController::convertStatementList </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *&#160;</td>
          <td class="paramname"><em>statements</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Builds up a sequence of <a class="el" href="classelftosb_1_1_operation.html" title="Abstract base class for all boot operations. ">Operation</a> objects that are equivalent to the statements in the <em>statements</em> list. The statement list is simply iterated over and the results of <a class="el" href="classelftosb_1_1_conversion_controller.html#a8df833e6e93d3b17b929d2cced6920bb">convertOneStatement()</a> are used to build up the final result sequence.</p>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classelftosb_1_1_conversion_controller.html#a8df833e6e93d3b17b929d2cced6920bb">convertOneStatement()</a> </dd></dl>

</div>
</div>
<a class="anchor" id="ada4209b5749ef668ba65b2893a7e9732"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_data_source.html">DataSource</a> * ConversionController::createSourceFromNode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *&#160;</td>
          <td class="paramname"><em>dataNode</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Takes an AST node that is one of the following subclasses and creates the corresponding type of <a class="el" href="classelftosb_1_1_data_source.html" title="Abstract base class for data sources. ">DataSource</a> object from it.</p><ul>
<li><a class="el" href="classelftosb_1_1_string_const_a_s_t_node.html">StringConstASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_expr_a_s_t_node.html" title="Abstract base class for all expression AST nodes. ">ExprASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_source_a_s_t_node.html">SourceASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_section_a_s_t_node.html" title="AST node for a section glob. ">SectionASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_section_match_list_a_s_t_node.html" title="List of section matches for a particular source name. ">SectionMatchListASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_blob_const_a_s_t_node.html">BlobConstASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_i_v_t_const_a_s_t_node.html" title="Node for a constant IVT structure as used by HAB4. ">IVTConstASTNode</a></li>
</ul>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classelftosb_1_1semantic__error.html" title="A semantic error discovered while processing the command file AST. ">elftosb::semantic_error</a></td><td>Thrown if a semantic problem is found with the data node. </td></tr>
    <tr><td class="paramname">std::runtime_error</td><td>Thrown if an error occurs that shouldn't be possible based on the grammar. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad479b0599759a9bc9198e3a5c4a4287e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_data_target.html">DataTarget</a> * ConversionController::createTargetFromNode </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_a_s_t_node.html">ASTNode</a> *&#160;</td>
          <td class="paramname"><em>targetNode</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Takes an AST node subclass and returns an appropriate <a class="el" href="classelftosb_1_1_data_target.html" title="Abstract base class for the target address or range of data. ">DataTarget</a> object that contains the same information. Supported AST node types are:</p><ul>
<li><a class="el" href="classelftosb_1_1_symbol_a_s_t_node.html">SymbolASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_natural_location_a_s_t_node.html">NaturalLocationASTNode</a></li>
<li><a class="el" href="classelftosb_1_1_address_range_a_s_t_node.html">AddressRangeASTNode</a></li>
</ul>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname"><a class="el" href="classelftosb_1_1semantic__error.html" title="A semantic error discovered while processing the command file AST. ">elftosb::semantic_error</a></td><td>Thrown if a semantic problem is found with the target node. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a96b363bd83e579f7d9e3d0ebb13859e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_boot_image.html">BootImage</a> * ConversionController::generateOutput </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_boot_image_generator.html">BootImageGenerator</a> *&#160;</td>
          <td class="paramname"><em>generator</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Uses a <a class="el" href="classelftosb_1_1_boot_image_generator.html" title="Abstract base class for generators of specific boot image formats. ">BootImageGenerator</a> object to create the final output boot image. </p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">generator</td><td>The generator to use. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a3b4f740adcce85a4044650523604c922"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="classelftosb_1_1_source_file.html">SourceFile</a> * ConversionController::getSourceFromName </td>
          <td>(</td>
          <td class="paramtype">std::string *&#160;</td>
          <td class="paramname"><em>sourceName</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>line</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">sourceName</td><td>Pointer to string containing the name of the source to look up. May be NULL, in which case the default source is used. </td></tr>
    <tr><td class="paramname">line</td><td>The line number on which the source name was located.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>A source file object that was previously created in the <a class="el" href="classelftosb_1_1_conversion_controller.html#a98b5fa4a578cc79d6b9eddcc192e8491">processSources()</a> stage.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Thrown if the source name is invalid, or if it was NULL and there is no default source (i.e., we're not inside a from statement). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af4f4d3c44b1be9dd0051a7899e1d9a12"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::handleMessageStatement </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_message_statement_a_s_t_node.html">MessageStatementASTNode</a> *&#160;</td>
          <td class="paramname"><em>statement</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Message statements are executed immediately, by this method. They are not converted into an abstract operation. All messages are passed through <a class="el" href="classelftosb_1_1_conversion_controller.html#a515fa552c78029c448b849d78f6b23e2">substituteVariables()</a> before being output.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">statement</td><td>The message statement AST node object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a0d4c92baf308f84152f1bcba4a606583"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::parseCommandFile </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Opens the command file and runs it through the lexer and parser. The resulting abstract syntax tree is held in the m_ast member variable. After parsing, the command file is closed.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Several problems will cause this exception to be raised, including an unspecified command file path or an error opening the file. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a63838abcab2df44563db15fc2ca88761"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::printIntConstExpr </td>
          <td>(</td>
          <td class="paramtype">const std::string &amp;&#160;</td>
          <td class="paramname"><em>ident</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_int_const_expr_a_s_t_node.html">IntConstExprASTNode</a> *&#160;</td>
          <td class="paramname"><em>expr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Prints out the value of an integer constant expression AST node. Also prints the name of the identifier associated with that node, as well as the integer size. </p>

</div>
</div>
<a class="anchor" id="aaa468ab83633871567e5190ff62a35f7"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::processConstants </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *&#160;</td>
          <td class="paramname"><em>constants</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Scans the constant definition AST nodes, evaluates expression nodes by calling their <a class="el" href="classelftosb_1_1_expr_a_s_t_node.html#a28d28e6317df4cc1088c751c72f251cb" title="Evaluate the expression and produce a result node to replace this one. ">elftosb::ExprASTNode::reduce()</a> method, and updates the evaluation context member so those constant values can be used in other expressions.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Various errors will cause this exception to be thrown. These include AST nodes being an unexpected type or expression not evaluating to integers. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a5eda84b94dfeea7b7e2144d88b7b4b9a"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::processKeyblob </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_expr_a_s_t_node.html">ExprASTNode</a> *&#160;</td>
          <td class="paramname"><em>idExpr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *&#160;</td>
          <td class="paramname"><em>entries</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Iterates over the keyblob definition AST nodes.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Various errors will cause this exception to be thrown. These include AST nodes being an unexpected type or expression not evaluating to integers. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af9d97007fa64feaf2e947d4322a9267e"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::processOptions </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *&#160;</td>
          <td class="paramname"><em>options</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Iterates over the option definition AST nodes. <a class="el" href="classelftosb_1_1_value.html" title="Abstract base class for values of arbitrary types. ">elftosb::Value</a> objects are created for each option value and added to the option dictionary.</p>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Various errors will cause this exception to be thrown. These include AST nodes being an unexpected type or expression not evaluating to integers. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a98b5fa4a578cc79d6b9eddcc192e8491"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::processSources </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_list_a_s_t_node.html">ListASTNode</a> *&#160;</td>
          <td class="paramname"><em>sources</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Various errors will cause this exception to be thrown. These include AST nodes being an unexpected type or expression not evaluating to integers.</td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="af8549b36d95bdc61929f4ad7ad18997c"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::run </td>
          <td>(</td>
          <td class="paramname"></td><td>)</td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">

<p>Process input files. </p>
<p>These steps are executed while running this method:</p><ul>
<li>The command file is parsed into an abstract syntax tree.</li>
<li>The list of options is extracted.</li>
<li>Constant expressions are evaluated.</li>
<li>The list of source files is extracted and source file objects created.</li>
<li>Section definitions are extracted.</li>
</ul>
<p>This method does not produce any output. It processes the input files and builds a representation of the output in memory. Use the <a class="el" href="classelftosb_1_1_conversion_controller.html#a96b363bd83e579f7d9e3d0ebb13859e3" title="Uses a BootImageGenerator object to create the final output boot image. ">generateOutput()</a> method to produce a <a class="el" href="classelftosb_1_1_boot_image.html" title="Abstract base class for all boot image format classes. ">BootImage</a> object after this method returns.</p>
<dl class="section note"><dt>Note</dt><dd>This method is <em>not</em> reentrant. And in fact, the whole class is not designed to be reentrant.</dd></dl>
<dl class="exception"><dt>Exceptions</dt><dd>
  <table class="exception">
    <tr><td class="paramname">std::runtime_error</td><td>Any number of problems will cause this exception to be thrown.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section see"><dt>See also</dt><dd><a class="el" href="classelftosb_1_1_conversion_controller.html#a0d4c92baf308f84152f1bcba4a606583">parseCommandFile()</a> </dd>
<dd>
<a class="el" href="classelftosb_1_1_conversion_controller.html#af9d97007fa64feaf2e947d4322a9267e">processOptions()</a> </dd>
<dd>
<a class="el" href="classelftosb_1_1_conversion_controller.html#aaa468ab83633871567e5190ff62a35f7">processConstants()</a> </dd>
<dd>
<a class="el" href="classelftosb_1_1_conversion_controller.html#a98b5fa4a578cc79d6b9eddcc192e8491">processSources()</a> </dd>
<dd>
processSections() </dd></dl>

</div>
</div>
<a class="anchor" id="a515fa552c78029c448b849d78f6b23e2"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">std::string * ConversionController::substituteVariables </td>
          <td>(</td>
          <td class="paramtype">const std::string *&#160;</td>
          <td class="paramname"><em>message</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Performs shell-like variable substitution on the string passed into it. Both sources and constants can be substituted. Sources will be replaced with their path and constants with their integer value. The syntax allows for some simple formatting for constants.</p>
<p>The syntax is mostly standard. A substitution begins with a dollar-sign and is followed by the source or constant name in parentheses. For instance, "$(mysource)" or "$(myconst)". The parentheses are always required.</p>
<p>Constant names can be prefixed by a single formatting character followed by a colon. The only formatting characters currently supported are 'd' for decimal and 'x' for hex. For example, "$(x:myconst)" will be replaced with the value of the constant named "myconst" formatted as hexadecimal. The default is decimal, so the 'd' formatting character isn't really ever needed.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramname">message</td><td>The string to perform substitution on. </td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Returns a newly allocated std::string object that has all substitutions replaced with the associated value. The caller is responsible for freeing the string object using the delete operator. </dd></dl>

</div>
</div>
<a class="anchor" id="a6d7e4b970d586cc1467a5d7d4d0e55e5"></a>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
  <tr>
  <td class="mlabels-left">
      <table class="memname">
        <tr>
          <td class="memname">void ConversionController::testLexer </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="classelftosb_1_1_elftosb_lexer.html">ElftosbLexer</a> &amp;&#160;</td>
          <td class="paramname"><em>lexer</em></td><td>)</td>
          <td></td>
        </tr>
      </table>
  </td>
  <td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span>  </td>
  </tr>
</table>
</div><div class="memdoc">
<p>Exercises the lexer by printing out the value of every token produced by the lexer. It is assumed that the lexer object has already be configured to read from some input file. The method will return when the lexer has exhausted all tokens, or an error occurs. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="_conversion_controller_8h_source.html">ConversionController.h</a></li>
<li>ConversionController.cpp</li>
</ul>
</div><!-- contents -->
</div><!-- doc-content -->
<!-- start footer part -->
<div id="nav-path" class="navpath"><!-- id is needed for treeview function! -->
  <ul>
    <li class="navelem"><b>elftosb</b></li><li class="navelem"><a class="el" href="classelftosb_1_1_conversion_controller.html">ConversionController</a></li>
    <li class="footer">Generated on Mon Mar 7 2016 16:49:51 for Kinetis Bootloader Host by
    <a href="http://www.doxygen.org/index.html">
    <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.11 </li>
  </ul>
</div>
</body>
</html>
